package com.xinyue.game.gateway.common;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

import java.util.Arrays;
import java.util.List;

@ConfigurationProperties(prefix = "xinyue.gateway.config")
@Data
@Configuration
public class GameGatewayConfig {

    /**
     * 网关节点,默认是1001
     */
    private String gatewayNodeId = "GatewayNode-1001";
    private int port = 8088;
    private int bossThreads = 1;
    /**
     * 工作线程的数量
     **/
    private int workThreads = Runtime.getRuntime().availableProcessors();
    private int sendBuffSize = 65535;
    private int receiveBuffSize = 65535;
    /**
     * 接收到消息的最大长度
     */
    private int maxFrameLength = 1024 * 1024;
    /**
     * 客户端请求QPS限制
     */
    private int requestQps = 1000;
    /**
     * 全局客户端请求QPS限制
     */
    private int globalRequestQps = 8000;
    /**
     * 连接最大空闲时间,单位秒
     */
    private int maxIdleTime = 60;
    /**
     * 连接认证超时时间，单位秒
     */
    private int confirmTimeout = 30;
    /**
     * 消息响应的缓存时间,单位毫秒
     */
    private int responseCacheTime = 120000;
    /**
     * 游戏IO异步线程数
     */
    private int ioThreadCount = Runtime.getRuntime().availableProcessors();

    /**
     * 客户端连接缓存的最大个数
     */
    private int maxChannelCacheModelCount = 5120;
    /**
     * 游戏缓存对象在内存中的空闲最大时间，在这个时间内如果对象不再被使用，将被移除,单位是秒
     */
    private int maxChannelCacheModelIdleTime = 60 * 120;

    /**
     * token加密密钥
     */
    private String tokenAesKey = "123456AAbbcc#@xm";
    
    /**
     * 游戏Id列表，用于支持多款不同的游戏
     */
    private List<String> gameIdList = Arrays.asList("1");
    /**
     * RocketMQ的服务地址
     */
    private String rocketmqServer = "192.168.1.24:9876";
}
